package logicQuiz

import org.springframework.cloud.contract.spec.Contract

Contract.make {
    request {
        method("GET")
        url(value(producer("/api/v3/logicQuizzes/1")
                , consumer(regex("/api/v3/logicQuizzes/\\d+"))))
    }
    response {
        status(200)
        body("""
        {
            "logicQuiz":{
                "id":1,
                "hardCount":1,
                "normalCount":1,
                "easyCount":1,
                "timeBoxInMinutes":500,
                "description":"description",
                "exampleCount":1,
                "quizGroupId":1,
                "isAvailable":true
            },
            "quizzes": {
                "normalItems": [],
                "hardItems": [],
                "exampleItems": [{
                "id": 1,
                "initializedBox": "initializedBox",
                "stepsString": "stepsString",
                "count": 2,
                "questionZh": "questionZh",
                "stepsLength": 2,
                "maxUpdateTimes": 5,
                "descriptionZh": "descriptionZh",
                "chartPath": "chartPath",
                "infoPath": "infoPath",
                }],
                "easyItems": []
             }
        }
        """)
        bodyMatchers {
            jsonPath('$.logicQuiz', byType())
            jsonPath('$.logicQuiz.id', byRegex(number()))
            jsonPath('$.logicQuiz.hardCount', byRegex(number()))
            jsonPath('$.logicQuiz.normalCount', byRegex(number()))
            jsonPath('$.logicQuiz.easyCount', byRegex(number()))
            jsonPath('$.logicQuiz.timeBoxInMinutes', byRegex(number()))
            jsonPath('$.logicQuiz.description', byRegex("[\\s\\S]+"))
            jsonPath('$.logicQuiz.exampleCount', byRegex(number()))
            jsonPath('$.logicQuiz.quizGroupId', byRegex(number()))
            jsonPath('$.logicQuiz.isAvailable', byRegex(anyBoolean()))
            jsonPath('$.quizzes.normalItems', byType())
            jsonPath('$.quizzes.hardItems', byType())
            jsonPath('$.quizzes.exampleItems[*].id', byRegex("[\\s\\S]+"))
            jsonPath('$.quizzes.exampleItems[*].initializedBox', byRegex("[\\s\\S]+"))
            jsonPath('$.quizzes.exampleItems[*].stepsString', byRegex("[\\s\\S]+"))
            jsonPath('$.quizzes.exampleItems[*].count', byRegex(number()))
            jsonPath('$.quizzes.exampleItems[*].questionZh', byRegex("[\\s\\S]+"))
            jsonPath('$.quizzes.exampleItems[*].stepsLength', byRegex(number()))
            jsonPath('$.quizzes.exampleItems[*].maxUpdateTimes', byRegex(number()))
            jsonPath('$.quizzes.exampleItems[*].descriptionZh', byRegex("[\\s\\S]+"))
            jsonPath('$.quizzes.exampleItems[*].chartPath', byRegex("[\\s\\S]+"))
            jsonPath('$.quizzes.exampleItems[*].infoPath', byRegex("[\\s\\S]+"))
            jsonPath('$.quizzes.exampleItems[*].easyItems', byType())
        }
        headers {
            contentType(applicationJsonUtf8())
        }
    }
}
